// stadard libraries
#include <string>
#include <vector>

// custom libraries
#include "..\include\file\infile.h"
#include "..\include\settings.h" // matching header


// ==================================
//     SINGLETON IMPLEMENTATION
// ==================================

Settings* Settings::Instance()
{
    // Meyers singleton
    static Settings obj;
    return &obj;
}

Settings::Settings() {}
Settings::~Settings() {}
Settings::Settings(const Settings& other) {}
Settings& Settings::operator=(const Settings& other) { return *this; }


// ==================================
//           DATA PATHS
// ==================================

std::string Settings::getFontsPath()
{
	return "data/fonts";
}

std::string Settings::getImagesPath()
{
	return "data/images";
}

std::string Settings::getSoundsPath()
{
	return "data/sounds";
}

std::string Settings::getTextPath()
{
	return "data/text";
}


// ==================================
//        TEXT FILEz PATHS
// ==================================

std::string Settings::getScriptFilepath()
{
	return getTextPath() + "/" + "script.risen";
}

std::string Settings::getAnimationsFileath()
{
	return getTextPath() + "/" + "animations.risen";
}

std::string Settings::getCreditsFilepath()
{
	return getTextPath() + "/" + "credits.risen";
}


// ==================================
//            OTHER PATHS
// ==================================

std::vector<std::string> Settings::getMusicPaths()
{
	std::vector<std::string> vect;
	std::string sp = getSoundsPath();

	vect.push_back(sp + "/" + "RPB-WoPiMedley.mp3");
	vect.push_back(sp + "/" + "Risen_Christmas2008_Medley.mp3");

	return vect;
}

std::string Settings::getFontFilepath()
{
	return getFontsPath() + "/" + "FreeMono.ttf";
}


// ==================================
//            MAIN MENU
// ==================================

bool Settings::isMenuEnabled() 
{
	return true;
}


std::string Settings::getMenuBackgroundFilepath() 
{
	return getImagesPath() + "/" + "menu.jpg";
}


std::vector<std::string> Settings::getMenuOptions() 
{
	std::vector<std::string> vect;

	vect.push_back("English");
	vect.push_back("French");
	vect.push_back("German");
	vect.push_back("Romanian");
	vect.push_back("Russian");

	return vect;
}